#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int mod = 1e9 + 7;

int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

ll qmi(ll a, ll b)
{
    ll res = 1;
    while(b)
    {
        if(b & 1)res = res * a % mod;
        b >>= 1;
        a = a * a % mod;
    }
    return res;
}
struct custom_hash {
	static uint64_t splitmix64(uint64_t x) {
		x ^= x << 13;
		x ^= x >> 7;
		x ^= x << 17;
		return x; 
	}
	size_t operator () (uint64_t x) const {
		static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); // 时间戳
		return splitmix64(x + FIXED_RANDOM);
	}
};
int memo[1010][1010];

void solve()
{
    string a, b, c;
    cin >> a >> b >> c;
    int n = a.size(), m = b.size();
    memset(memo, -1, sizeof(memo));
    auto dfs = [&](auto&& dfs, int pa, int pb)->int {
        if(pa == n && pb == m){
            return 0;
        }
        int& res = memo[pa][pb];
        if(res != -1) return res;
        if(pa < n) {
            if(c[pa + pb] == a[pa]) {
                res = max(res, dfs(dfs, pa + 1, pb) + 1);
            }else{
                res = max(res, dfs(dfs, pa + 1, pb));
            }
        }
        if(pb < m) {
            if(c[pa + pb] == b[pb]) {
                res = max(res, dfs(dfs, pa, pb + 1) + 1);
            }else{
                res = max(res, dfs(dfs, pa, pb + 1));
            }
        }
        return res;
    };
    cout << c.size() - dfs(dfs, 0, 0) << endl;
}


int main()
{
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}